package file.it.byte_stream;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.FileInputStream;

/**
 * 目标：掌握文件字节输入流，每次读取一个字节
 */
public class FileInputStreamTest {
    public static void main(String[] args) throws Exception {
        // 1. public FileInputStream(File file) 创建字节输入流管道与源文件接通
        // 多态写法 左边是=>父类 右边是=>实现类
        // InputStream is = new FileInputStream(new File("src/abc.txt"));

        // public FileInputStream(String pathname) 创建字节输入流管道与源文件接通
        // 简化写法： 推荐使用
        InputStream is = new FileInputStream(("src/abc.txt"));

        // 2.public int read() 每次读取一个字节返回，如果发现没有数据可读会返回-1
        // 读取文件的 字节数
//        int b1 = is.read();
//        System.out.println(b1); // a->97
//        System.out.println((char) b1); // a
//
//        int b2 = is.read();
//        System.out.println(b2);
//        System.out.println((char) b2);
//
//        int b3 = is.read();
//        System.out.println(b3);
//        System.out.println((char) b3);

        // 3.使用循环改造上述代码 => 读取数据性能很差;读取汉字输出会乱码!无法避免
        int b; // 用于记住读取的字符串
        while ((b = is.read()) != -1) {
            System.out.println((char) b);
        }

        // 流使用完毕之后，必须关闭！释放系统资源
        is.close();

    }
}
